package cn.xwt.weidisk.mapper;

import cn.xwt.weidisk.pojo.dao.UserDo;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * @author 薛慰涛
 * 操作user表
 */
public interface UserMapper {

    /**
     * 通过邮箱查询用户
     * @param value 用户名或邮箱
     * @return user
     */
    UserDo selectUserByEmailOrUsername(@Param("value") String value);

    /**
     * 注册用户
     * @param userDo username password email
     * @return int
     */
    int insertUser(UserDo userDo);

    /**
     * 通过用户id查询用户信息
     * @param id 用户id
     * @return userDo
     */
    UserDo selectUser(@Param("id") Long id);

    /**
     * 查询用户id
     * @param username 用户名
     * @param email 邮箱
     * @return 用户id
     */
    Long selectUserId(@Param("username") String username, @Param("email") String email);

    /**
     * 保存头像信息
     * @param id 用户id
     * @param avatar 头像键
     */
    void updateAvatar(@Param("id") Long id, @Param("avatar") String avatar);

    /**
     * 查询头像键
     * @param id 用户id
     * @return string
     */
    String selectAvatar(@Param("id") Long id);

    /**
     * 修改用户名
     * @param id 用户id
     * @param username 用户名
     */
    void updateUsername(@Param("id") Long id, @Param("username") String username);

    /**
     * 修改密码
     * @param id 用户id
     * @param password 密码
     */
    void updatePassword(@Param("id") Long id, @Param("password") String password);

    /**
     * 修改邮箱
     * @param id 用户id
     * @param email 邮箱
     */
    void updateEmail(@Param("id") Long id, @Param("email") String email);

    /**
     * 通过id查询密码
     * @param id 用户id
     * @return String
     */
    String selectPassword(@Param("id") Long id);

    /**
     * 通过id查询容量
     * @param id 用户id
     * @return integer
     */
    Integer selectCapacity(@Param("id") Long id);

    /**
     * 查询用户列表
     * @return List<UserDo>
     */
    List<UserDo> selectUserList();

    /**
     * 修改用户locked
     * @param id 用户id
     * @param locked locked
     */
    void updateLocked(@Param("id") Long id, @Param("locked") Byte locked);

    /**
     * 修改用户容量
     * @param id 用户id
     * @param capacity 容量
     */
    void updateCapacity(@Param("id") Long id, @Param("capacity") Integer capacity);
}
